package mapper;

import bean.*;
import org.apache.ibatis.annotations.Param;


import java.util.List;

public interface IRoomMapper {
    /**
     * 得到数据库表中房间的总记录数
     *
     * @return 总记录数
     */
    public int getTotal();

    /**
     * 动态条件分页查询当前页的数据
     *
     * @param start    起始记录数
     * @param pageSize 每页显示记录数
     * @param roomAddr 房间地址
     * @param status   房间状态
     * @param liveRoom 是否为可住房间
     * @param type     房间类型（男生宿舍，女生宿舍）
     * @return 学生分页对象
     */
    public List<RoomBean> cutByItemList(@Param("start") int start,
                                        @Param("pageSize") int pageSize,
                                        @Param("roomAddr") String roomAddr,
                                        @Param("status") String status,
                                        @Param("liveRoom") String liveRoom,
                                        @Param("type") String type);

    /**
     * 动态条件分页查询总记录数
     *
     * @param roomAddr 房间地址
     * @param status   房间状态
     * @param liveRoom 是否为可住房间
     * @param type     房间类型（男生宿舍，女生宿舍）
     * @return 总记录数
     */
    public int cutByItemCount(@Param("roomAddr") String roomAddr,
                              @Param("status") String status,
                              @Param("liveRoom") String liveRoom,
                              @Param("type") String type);


    /**
     * 添加房间
     * 如果房间中有该房间名称则不允许添加，返回false
     *
     * @param room
     * @return
     */
    boolean add(@Param("room") RoomBean room);

    /**
     * 根据房间id查找房间所住学生人数
     *
     * @param roomId 房间id
     * @return
     */
    int getStudentCount(Integer roomId);

    /**
     * 删除该房间的设施记录
     *
     * @param roomId 房间id
     */
    void deleteSet(int roomId);

    /**
     * 按房间编号删除房间
     * 1、统计房间已住人数
     * 2、如果已住人数不为0，则返回false
     * 3、如果已住人数为0，先删除该房间的设施维护记录，再删除房间
     *
     * @param roomId
     * @return
     */
    boolean deleteRoom(int roomId);

    /**
     * 按房间编号查询房间
     * 同时查询该房间的所住学生，在学生信息中，需要包含班级名称
     *
     * @param roomId 房间编号
     * @return 学生集合
     */
    List<StudentBean> findById(int roomId);


    /**
     * 按性别查询可住房间
     *
     * @param type 男，女
     * @return 房间集合
     */
    List<RoomBean> listRoomByType(String type);


}
